/**
 * @author chenjuan
 * @description vuex的定义、实例化库
 */

import Vue from 'vue'
import Vuex from 'vuex'

//持久化库
import persistState from 'vuex-persistedstate'
import {getRightApi} from '../apis/homeApis'

//全局插件注册
Vue.use(Vuex)

//实例化store类
export default new Vuex.Store({
    plugins: [
        //注入该实例后，数据就没有丢失，数据存储在localStorage
        //这个插件默认的存储是localStorage
        //实例化的时候可以传递参数
        //指定存储位置到sessionStorage
        persistState({
            storage: window.sessionStorage
        })
    ],
    //定义模块
    modules: {
        //定义模块名字
        common: {
            //命名空间可用
            namespaced: true,

            //初始化、定义缓存数据
            state: {
                token: '',
                userInfo: {},
                userRights: {},
            },

            //定义数据暴露/获取接口--getter方法
            getters: {
                //为了语义化，getter方法的名字可以和数据名一样
                //state和getter是同一级别的属性，所以获取state的属性只能是入参进来
                // token() {

                // }
                token: ({token}) => token,
                userInfo: ({userInfo}) => userInfo,
                userRights: ({userRights}) => userRights
            },

            mutations: {
                setToken(state, token){
                    state.token = token
                },
                setUser(state, user){
                    state.userInfo = user
                },
                setRights(state, rights){
                    state.userRights = rights
                }
            },
            actions: {
                async rightsAct({commit}, ids){
                    let result = await getRightApi(ids)
                    // debugger;
                    // console.log(ids)
                    // console.log('setright',result)
                    commit('setRights',result.data)
                },

            }
        }
    }
})